(function($){
  $.fn.loader = function(params){
    var base = this;
    base.$el = $(base);
    base.el = base;
    base.$el.data("defaultValue", base);

    base.init = function(){
      if ( $('#loading').size() <= 0 ) {        
        $('<div id="loading"></div>').appendTo('#res');
      }
    };
   
    
    base.go = function(name, url) {      
      var toCache = base.children();
          
      // FadeOut galery
      toCache.fadeOut('fast', function() {
        $(this).appendTo('#res');
        
        // Decache new Galery  
        if ( $('#'+name).size() > 0 ) {
          $('#'+name).appendTo(base.$el).hide().fadeIn('slow');
        }
      
        else {
          $('#loading').appendTo(base.$el).hide().fadeIn('normal', function() {
            $.post(url, { ajax: true }, function(data) {
              $('#loading').fadeOut('fast', function() {
                $(this).appendTo('#res');
                $(data).appendTo(base.$el).hide().fadeIn('slow');
              });
            }); // post callback   
          }); // loading fadeIn              
        } // end else
      });      
    }
       
    base.init();
    return base;
  };
})(jQuery);